package com.example.flutter_tap.base

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.viewbinding.ViewBinding
import com.simin.mall.base.BaseFragment

/**
 * Created by wsm on 2025/4/25
 * <p>BaseKtFragment
 */
abstract class BaseKtFragment<VB : ViewBinding> : BaseFragment() {
    private var _binding: VB? = null
    protected val binding get() = _binding!!

    // 重写 onCreateView 方法，使用 View Binding 来创建视图
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View? {
        _binding = inflateBinding(inflater, container)
        return binding.root
    }

    // 重写 setContentViewID 方法，这里不需要具体实现，因为使用了 View Binding
    override fun setContentViewID(): Int {
        return 0
    }

    // 重写 initView 方法，这里不需要具体实现，因为使用了 View Binding
    override fun initView(view: View?) {

    }

    // 重写 loadData 方法，这里不需要具体实现，因为使用了 View Binding
    override fun loadData() {

    }

    /**
     * 重写了 onViewCreated 方法，在该方法中调用 initView 方法，确保视图创建完成后再进行初始化操作
     */
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initBindView(binding)
        initData()
    }

    protected abstract fun inflateBinding(inflater: LayoutInflater, container: ViewGroup?): VB

    /**
     * 抽象方法，用于使用 ViewBinding 实例初始化视图
     */
    protected abstract fun initBindView(binding: VB)

    protected abstract fun initData()

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }

}